package uk.co.q3c.deplan.client.service;

import uk.co.q3c.deplan.client.dao.CalendarService;
import uk.co.q3c.deplan.client.dao.DesignService;
import uk.co.q3c.deplan.client.dao.ResourceService;
import uk.co.q3c.deplan.server.admin.ServerServiceFactory;
import uk.co.q3c.deplan.server.service.TaskService_BigT;

/**
 * Provides access to Dao objects. Also provides a "session", by holding an instance of the datastore until it is closed by calling
 * {@link #closeSession()}. The same session is available to all Dao's
 * 
 * @see ClientServiceFactory
 * @see ServerServiceFactory
 * @see TaskService_BigT
 * @author David Sowerby 17 Apr 2010
 * 
 */
public interface ServiceFactory {

	CalendarService calendarService();

	DesignService designService();

	ResourceService resourceService();

	TaskService taskService();

	/**
	 * {@link ServerServiceFactory#closeSession()}
	 */
	void closeSession();

	/**
	 * @see
	 */
	void openSession();

}
